// app.js
require('dotenv').config();
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const swaggerSpec = require('./config/swagger');
const todoRoutes = require('./routes/todoRoutes');
const sqlGeneratorRoutes = require('./routes/sqlGeneratorRoutes');
const cors = require('cors');

const app = express();

// 中间件
app.use(express.json());
app.use(cors({
  // 允许任何来源访问
  origin: '*',
  
  // 如果你只允许特定的域名访问
  // origin: 'http://example.com',
  
  // 额外的配置项
  methods: ['GET', 'POST', 'PUT', 'DELETE'],
  allowedHeaders: ['Content-Type', 'Authorization'],
  credentials: true
}));

// Swagger文档路由 (作为View层)
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));

// API路由
app.use('/api/todos', todoRoutes);
app.use('/api/sql', sqlGeneratorRoutes);

// 根路由重定向到API文档
// app.get('/', (req, res) => {
//   res.redirect('/api-docs');
// });

// 根路由重定向到API文档
app.use((req, res) => {
  res.status(404).json({error: '未找到该资源'});
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({
    error: '服务器内部错误',
    message: err.message
  });
});

module.exports = app;